package br.com.vfcfw.controller.validator;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import br.com.vfcfw.commons.util.ConstantesArquitetura;
import br.com.vfcfw.commons.util.ValidacaoUtil;

/**
 * Classe {@link Validator} responsável pela validação de email
 * 
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 22/05/2014
 * 
 */
@FacesValidator("validator.emailValidator")
@ManagedBean(name = "emailValidator", eager = true)
@ApplicationScoped
public class EmailValidator extends BaseValidator {

    public EmailValidator() {

        super();
    }

    @Override
    public void validate(FacesContext facesContext, UIComponent componente, Object valor) throws ValidatorException {

        if (possuiValor(valor) && !ValidacaoUtil.isEmailValido(valor.toString())) {

            FacesMessage msg = new FacesMessage(obterMensagem(ConstantesArquitetura.MSG_ERRO_VALIDACAO_EMAIL));
            throw new ValidatorException(msg);

        }

    }

}
